//拦截器


//引入axios
import axios from 'axios'
//引入进度条
import NProgress from 'nprogress'
//引入nprogress的css样式
//引入时先找默认模块,找不到找第三方模块,
//自己写的模块需要路径
//引入nprogress模块里的css文件
import 'nprogress/nprogress.css'



//创建axios实例
const request = axios.create({
  baseURL : '/api1',
  timeout:10000
})


// 添加请求拦截器
request.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  //添加一个进度条
  NProgress.start()

  //在发送请求之前给请求头加一个token
  const token = localStorage.getItem('user_token')
  config.headers.token = token

  return config;
}, function (error) {
  // 对请求错误做些什么
  NProgress.done()

  return Promise.reject(error);
});

// 添加响应拦截器
request.interceptors.response.use(function (response) {
  // 对响应数据做点什么
  NProgress.done()

  //response.data  :
  //      {
      //   code: 10001,
      //   msg: '添加管理员-用户已经被注册',
      //   data: null
      // })

      //添加一个判断,如果返回的code是20000,说明是权限验证失败,如果权限验证失败,则返回到登录页面,
      if(response.data.code === 20000){
        return Promise.reject({  //return一个失败的promise实例,axios的结果是失败的promise实例让try去接收   try接收的结果是一个失败的promise时,就会进入axios后的catch  
          message:response.data.msg,
          isLogin:false
        })
      }
  if(response.data.code !== 10000){
    return Promise.reject({  //return一个失败的promise实例,axios的结果是失败的promise实例让try去接收   try接收的结果是一个失败的promise时,就会进入axios后的catch  
      message:response.data.msg
    })
  }

  return response.data.data;//返回的是正确的数据(data:null)
}, function (error) {
  // 对响应错误做点什么
  
  NProgress.done()
//拦截器相当于.then方法
  return Promise.reject(error);
});

// module.exports = request

export default request